package com.mrd.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * <p> application name: sample <p> copyright: Copyright@2012 明睿达科技有限公司
 */

/**
 * @author qiul
 */
public class CollectionUtil {

    /**
     * 该方法会返回一个新的list,该list包含未被过滤的值，不会影响当做参数传入的list
     *
     * @param srcList 需要进行过滤操作的list
     * @param filter  过滤接口，对于对象e如果调用filter.filter(e)方法，返回true则表明e为不需要过滤的值，否则e将被过滤掉
     * @return 返回过滤后的值
     */
    public static <E> List<E> list(List<E> srcList, IFilter<E> filter) {
        List<E> list = new ArrayList<E>();
        for (E e : srcList) {
            if (filter.filter(e)) {
                list.add(e);
            }
        }
        return list;
    }

    /**
     * 将数组中的数据添加进入list,如果list为空则新建一个list
     *
     * @param list  需要添加数据的list
     * @param array 被添加的数据
     */
    public static <E> List<E> addAll(List<E> list, E[] array) {
        if (list == null) {
            list = new ArrayList<E>();
        }
        for (E e : array) {
            list.add(e);
        }
        return list;
    }

    /**
     * 从一个数组中产生一个list集合
     *
     * @param array 数据源数组
     */
    public static <E> List<E> arrToList(E[] array) {
        return addAll(null, array);
    }

    /**
     * 集合判空， 先判断集合是否为null如果为null则返回false,然后判空
     *
     * @param collection 集合对象
     */
    public static <E> boolean isEmpty(Collection<E> collection) {
        if (collection == null) {
            return false;
        }
        return collection.isEmpty();
    }

    /**
     * 判断集合是否不为空
     */
    public static <E> boolean isNotEmpty(Collection<E> collection) {
        return !isEmpty(collection);
    }
}
